The confusion here is around the definition of "falsy" in JavaScript, which (contrary to popular belief) isn't the same as == false.
Falsy actually refers to a value that has a boolean equivalent of false, not an expression whose result == false. The only Falsy values in JavaScript are: false, 0, "", null, undefined, and NaN. So any of those values -- or any expression that evalutes to one of those values (like in an if statment or using the ternary operator) -- is falsy.
Here's a table I put together of falsy/truthy values in JavaScript that should help explain this whole issue.
http://jsfiddle.net/philipwalton/QjSYG/