{}[true] is [true] and ![true] should be false.
{}[true]
[true]
![true]
false
So why does !{}[true] evaluate to true
!{}[true]
true
You're not reversing the value of it.
![true] != [!true]
Check this out: Why is !true ? 'false' : 'true' returning 'true'?