"hello" is Not a Number. "world" is Not a Number.
(Number)"hello" == (Number)"world" returns false.
EDIT: Another reason why this is the case is because IEEE mandates it to be. All numbers in JS are 64 bit floating point numbers. This allows for a crazy amount of NaNs (and oh the fun stuff you can do with that). To be sane, NaNs are not the same when comparing them (there is a lot more subtlety in that - comparing quiet and signalling NaNs, and so on and so forth)
http://stackoverflow.com/questions/1565164/what-is-the-ratio...
Cryptic and ancient?! IEEE 754 is the behavior implemented by the chip in the computer you're using to browser HN with right now.
Ancient it is not, and old isn't bad. Lots of deep thinking went into IEEE-754, http://www.cs.berkeley.edu/~wkahan/ieee754status/754story.ht... calculating with computers is hard work.