title: How postfix increment work when it meet addition(+) operator in JavaScript?
body: <p>First of all, I know the expressions talked about later has <code>side-effects</code>, and should not be used in production environment. I just want to understand <code>JavaScript</code> through them. All of them are tested under <code>Chrome</code>.</p>
  
  <pre><code>var a = 42;
  var b = "42";
  a + ++b; // result is 85 
  </code></pre>
  
  <p>Here is my understanding of <code>a + ++b</code>,</p>
  
  <p>The <code>Prefix Increment (++)</code> (precedence 15) has higher precedence than <code>Addition(+)</code> (precedence 13) according to <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence">Operator precedence</a>. <code>++b</code> could be parsed var <code>ToNumber(GetValue(expr))</code> to <code>43</code>, refer to <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-unary-minus-operator"><code>12.5.7 Prefix Increment Operator</code></a>. Then the result of <code>a + 43</code> could be <code>85</code>.</p>
  
  <p>However,</p>
  
  <pre><code>var a = 42;
  var b = "42";
  a++ + b; // "4242"
  </code></pre>
  
  <p>Why the result of <code>a++ + b</code> is <code>"4242"</code>?</p>
  
  <p>I try to understand the result <code>"4242"</code>, it seems that the <code>a++</code> return <code>42</code> firstly, then for <code>42 + '42'</code>, the <code>42</code> will be <code>'42'</code> var <code>ToString()</code> firstly, refer to <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-addition-operator-plus"><code>12.7.3 The Addition operator ( + )</code></a>. then the result could be <code>"4242"</code>.</p>
  
  <p>But it seems violate the rule: <code>Postfix increment</code> (precedence 16) higher than <code>Addition</code> (precedence 13)??? </p>
  
  <pre><code>var a = 42;
  var b = "42";
  a +++b; // "4242" 
  </code></pre>
  
  <p>How does the <code>a +++b;</code> be parsed?</p>