JavaScript Type Casting: Conversion vs Coercion Explained