Performs logical negation on an expression.

*result* **= !***expression*

#### Arguments

*result*
- Any variable.
*expression*
- Any expression.

#### Remarks

The following table illustrates how *result* is determined.

If `expression` is |
Then `result` is |

True |
False |

False |
True |

All unary operators, such as the **!** operator, evaluate expressions as follows:

- If applied to undefined or
**null** expressions, a run-time error is raised.
- Objects are converted to strings.
- Strings are converted to numbers if possible. If not, a run-time error is raised.
- Boolean values are treated as numbers (0 if false, 1 if true).

The operator is applied to the resulting number.

For the **!** operator, if *expression* is nonzero, *result* is zero. If *expression* is zero, *result* is 1.

#### Requirements

Version 1

#### See Also

~ Operator | Operator Precedence | Operator Summary