почему отрицательные числа Javascript не всегда являются истинными или ложными?

-1 == true;        //false
-1 == false        //false
-1 ? true : false; //true

Кто-нибудь может объяснить вышеприведенный вывод? Я знаю, что могу обойти это, сравнивая с 0, но мне интересно. Я ожидал бы, что по крайней мере одно из неаккуратных операторов равенства будет истинным, поскольку они неявно преобразуют типы, и я, конечно же, не ожидал, что троичный символ даст совершенно другой результат.