What is Coercion?

Coercion is the process of conversion of one data type to another.

```javascript 1 + '2' // 1 coerces to '1' // '12'

1 + true // true coerces to 1 // 2

1 + null // null coerces to 0 // 1

1 + undefined // undefined coerces to 0 // 1

'abc' + undefined // undefined coerces to 'undefined' // 'abcundefined'

1 < 2 < 3 // => true < 3 (left to right associativity) // => 1 < 3 (coercion) // => true

1 > 2 > 3 // => false > 3 // => 1 > 3 // => false ```

JavaScript can give weird and unexpected results when comparing. Thus, it is better to use === instead of == for comparisons as === doesn't coerce.

```javascript 1 == '1' // true // coercion

1 === '1' // false ```

Coercion decisions are made by the JavaScript Engine itself.

Manual Coercion

Here's how you can manually convert to a datatype: ```javascript const number = 42; const string = '42';

Number(string); // Coerces to number // 42

String(number); // Coerces to string // '42'

Boolean(string); // Coerces to boolean // 1 ```

Conditional Statements

The conditions inside if, ternary operator, while loop etc. are coerced to Boolean.

Truthy and Falsy

Any value that coerces to true is called truthy and to false is called falsy.

There are only 6 falsy values, everything else is truthy: 1. false 2. 0 3. '', "" (Empty String) 4. null 5. undefined 6. NaN

Watch out for these:

```javascript Boolean({}); // true

Boolean([]); //true

Boolean("0"); // true

null == 0 // false ```

And that's all folks! Thank-you for reading and have a wonderful day 😄