The JavaScript Greater Than > operator
The greater-than operator > returns true if the left value is greater than the right. 5 > 3 is true. With numbers it compares numerically; with two strings it compares alphabetically (by character code), which is why "10" > "9" is surprisingly false. Any comparison with NaN is false.
Overview
> compares two values and returns true if the left is greater. For numbers it's exactly what you expect: 5 > 3, 2.5 > 2. It's a staple of conditions, sorting and range checks.
The catch is strings. When both operands are strings, JavaScript compares them lexicographically (character by character, by Unicode code point), not numerically. So "b" > "a" is true, but "10" > "9" is false, because the character "1" comes before "9". If you're comparing numeric strings (from form inputs, for instance), convert them with Number() first. (Uppercase letters also sort before lowercase; for human-friendly ordering use localeCompare().)
With mixed types (a number and a string), JavaScript coerces to numbers, so "10" > 9 is true. And one rule covers all relational operators: any comparison involving NaN is false; NaN > 1, 1 > NaN and even NaN > NaN are all false. Its siblings are <, >= and <=.
Syntax
a > b
5 > 3 // true
"b" > "a" // true (alphabetical)
"10" > "9" // false (string compare: '1' < '9')
"10" > 9 // true (mixed -> numeric)
NaN > 1 // false
Example
<pre id="out" style="font:14px ui-monospace,monospace"></pre>
<script>
document.getElementById('out').textContent =
'5 > 3 -> ' + (5 > 3) + '\n' +
'"10" > "9" -> ' + ('10' > '9') + '\n' +
'Number compare -> ' + (Number('10') > Number('9'));
// true / false / true
</script>
Best practices
- Convert numeric strings with Number() before comparing, or string comparison will mislead you.
- Remember two strings compare alphabetically (by code point), not numerically.
- For human-friendly string ordering, use localeCompare().
- Guard against
NaN; every comparison with it isfalse.
Frequently asked questions
Why is "10" > "9" false in JavaScript?
"1" (the first character of "10") is less than "9". Convert to numbers with Number() for numeric comparison.How does > compare strings?
What happens when comparing a number and a string with >?
"10" > 9 is true.What does NaN > 1 return?
false. Any relational comparison involving NaN is false.