Question: If you try to run following code you will see that  

`(![]+[])[+1]` returns "a";  

`(![]+[])[+2]` returns "l";  

`(![]+[])[+3]` returns "s".  

And so on.
Why?

Answer: 
`(![]+[])` returns `"false"` in javascript. The `+1` takes the letter at index `1`. Therefore `a`.
You're indexing the result of the first expression as a string.

(![]+[]) => false

false[1] => "false"[1] => a