Less than or equal (<=)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

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

Try it

console.log(5 <= 3); // Expected output: false console.log(3 <= 3); // Expected output: true // Compare bigint to number console.log(3n <= 5); // Expected output: true console.log("aa" <= "ab"); // Expected output: true 

Syntax

js
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

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

String to number comparison

js
"5" <= 3; // false "3" <= 3; // true "3" <= 5; // true "hello" <= 5; // false 5 <= "hello"; // false 

Number to Number comparison

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

Number to BigInt comparison

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

Comparing Boolean, null, undefined, NaN

js
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 

Specifications

Specification
ECMAScript® 2026 Language Specification
# sec-relational-operators

Browser compatibility

See also