Javascript's Arrays and Objects returning String
<p>I was reading these <a href="https://speakerdeck.com/dherman/es6-deep-dive?slide=64" rel="nofollow">slides</a> and I found the following javascript line:</p>

<pre><code> ({} + [])[!![] + !![] + !![]] + (![] + [])[!![] + !![] + !![]]
</code></pre>

<p>If you execute this line at the console, <strong>it will return "js".</strong>
  Altering the code makes the line return different letters. I could almost return my name(missing "n"): </p>

<pre><code>({} + [])[!![] + !![] + !![]] + (![] + {})[!![] + !![] + !![] + !![]] + (![] + {})[![] + !![] ]
</code></pre>

<p><strong>Why this happens? How this works?</strong> The slides didn't give much information about it.</p>
