Need help understanding function invocation in JavaScript
<p>I am having a hard time understanding a bit of example code from the book <em><a href="https://leanpub.com/javascriptallongesix/">JavaScript Allongé</a></em> (free in the online version).</p>

<p>The example code is a function for calculating the circumference for a given diameter. It shows different ways to bind values with names. One way to go about it, according to the book is this:</p>

<pre><code>(
 (diameter) =&gt;
  ((PI) =&gt; diameter * PI)(3.14159265)
)(2);
// calculates circumference given diameter 2
</code></pre>

<p>It further states:</p>

<blockquote>
  <p>Well, the wrinkle with this is that typically, invoking functions is considerably more expensive than evaluating expressions. Every time we invoke the outer function, we’ll invoke the inner function. We could get around this by writing</p>
</blockquote>

<pre><code>(
 ((PI) =&gt;
   (diameter) =&gt; diameter * PI
 )(3.14159265)
)(2);
</code></pre>

<p>I cannot understand how it gets around the situation with calling two functions, aren't there exactly two function calls in both the examples?
How do they differ from each other?</p>