# Less than or equal (<=)

The less than or equal (`<=`) operator returns `true` if the left operand is less than or equal to the right operand, and `false` otherwise.

## Syntax

``````x <= y
``````

## Description

The operands are compared using the same algorithm as the Less than operator, with the operands swapped and the result negated. `x <= y` is generally equivalent to `!(y < x)`, except for two cases where `x <= y` and `x > y` are both `false`:

• If one of the operands gets converted to a BigInt, while the other gets converted to a string that cannot be converted to a BigInt value (it throws a syntax error when passed to `BigInt()`).
• If one of the operands gets converted to `NaN`. (For example, strings that cannot be converted to numbers, or `undefined`.)

In addition, `x <= y` coerces `x` to a primitive before `y`, while `y < x` coerces `y` to a primitive before `x`. Because coercion may have side effects, the order of the operands may matter.

`x <= y` is generally equivalent to `x < y || x == y`, except for a few cases:

• When one of `x` or `y` is `null`, and the other is something that's not `null` and becomes 0 when coerced to numeric (including `0`, `0n`, `false`, `""`, `"0"`, `new Date(0)`, etc.): `x <= y` is `true`, while `x < y || x == y` is `false`.
• When one of `x` or `y` is `undefined`, and the other is one of `null` or `undefined`: `x <= y` is `false`, while `x == y` is `true`.
• When `x` and `y` are the same object that becomes `NaN` after the first step of Less than (such as `new Date(NaN)`): `x <= y` is `false`, while `x == y` is `true`.
• When `x` and `y` are different objects that become the same value after the first step of Less than: `x <= y` is `true`, while `x < y || x == y` is `false`.

## Examples

### String to string comparison

``````"a" <= "b"; // true
"a" <= "a"; // true
"a" <= "3"; // false
``````

### String to number comparison

``````"5" <= 3; // false
"3" <= 3; // true
"3" <= 5; // true

"hello" <= 5; // false
5 <= "hello"; // false
``````

### Number to Number comparison

``````5 <= 3; // false
3 <= 3; // true
3 <= 5; // true
``````

### Number to BigInt comparison

``````5n <= 3; // false
3 <= 3n; // true
3 <= 5n; // true
``````

### Comparing Boolean, null, undefined, NaN

``````true <= false; // false
true <= true; // true
false <= true; // true

true <= 0; // false
true <= 1; // true

null <= 0; // true
1 <= null; // false

undefined <= 3; // false
3 <= undefined; // false

3 <= NaN; // false
NaN <= 3; // false
``````

## Browser compatibility

BCD tables only load in the browser