Virtually all programming languages use a variety of data types to represent numbers; for instance bytes, ints, floats and doubles. Back when memory and processing power was expensive, we needed to be careful to limit our usages. It is quicker to operate on smaller number types, such as bytes and chars, than on floats and doubles. Likewise, the larger number types take up more memory. The limitiation of using different number types is that we need to be careful to use suitable number types to avoid overflow errors.
3/0 !== 3/0 Math.Sqrt(-4) !== Math.Sqrt(-4) Math.abs("text") !== Math.abs("text")
This seems a little odd until you consider that each of the expressions returns the same result, so the inequality makes more sense when if we muddle up the examples:
3/0 !== Math.abs("text") Math.Sqrt(-4) !== Math.abs("text") Math.Sqrt(-4) !== 3/0