title: JavaScript parenthesis effect on type conversions during addition
body: <p>In JavaScript, we have <code>{} + [] // 0</code> but <code>({}+[]) // "[object Object]"</code>. 
  I understand that in the first example, JS parses <code>{}</code> as an empty block, and so is left with <code>+ []</code>, at which point it calls <code>toNumber(toPrimitive([]))</code>, which is 0. But I don't understand how any of this changes by adding parenthesis. Does parenthesis stop JS from evaluating <code>{}</code> as an empty block, and instead converts it to its primitive, aka a string?</p>