por que os números negativos do Javascript nem sempre são verdadeiros ou falsos?

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

Alguém pode explicar a saída acima? Eu sei que poderia contornar isso comparando com 0, mas estou interessado. Eu esperaria que pelo menos uma das declarações de sloppy equals fosse verdadeira, pois elas fazem conversão implícita de tipo, e certamente não esperava que o ternário apresentasse um resultado totalmente diferente.

questionAnswers(3)

yourAnswerToTheQuestion