The subtract operator `(-)`

is uses as follows:

`var result = 2 - 1;`

The subtract operator has rules to deal with the variety of type:

Operand | Result |
---|---|

If the two operands are numbers | perform arithmetic subtract and return the result |

If either operand is NaN | the result is NaN |

If Infinity is subtracted from Infinity | the result is NaN |

If -Infinity is subtracted from -Infinity | the result is NaN |

If -Infinity is subtracted from Infinity | the result is Infinity |

If Infinity is subtracted from -Infinity | the result is -Infinity |

If +0 is subtracted from +0 | the result is +0 |

If -0 is subtracted from +0 | the result is -0 |

If -0 is subtracted from -0 | the result is +0 |

If either operand is a string, a Boolean, null, or undefined | it is converted to a number using Number() and the arithmetic is calculated using the previous rules.If that conversion results in NaN, then the result of the subtraction is NaN. |

If either operand is an object, | its valueOf() method is called to retrieve a numeric value to represent it.If that value is NaN, then the result of he subtraction is NaN.If the object doesn't have valueOf() defined, then toString() is called and the resulting string is converted into a number. |

var result1 = 5 - true; //4 because true is converted to 1 console.log(result1);/* w w w . jav a2s.c o m*/ var result2 = NaN - 1; //NaN console.log(result2); var result3 = 5 - 3; //2 console.log(result3); var result4 = 5 - ""; //5 because "" is converted to 0 console.log(result4); var result5 = 5 - "2"; //3 because "2" is converted to 2 console.log(result5); var result6 = 5 - null; //5 because null is converted to 0 console.log(result6);