Why is string “11” less than string “3”? [duplicate]

Strings are compared lexicographicaly. i.e. character by character until they are not equal or there aren’t any characters left to compare. The first character of ’11’ is less than the first character of ‘3’.

> '11' < '3'
true
> '31' < '3'
false
> '31' < '32'
true
> '31' < '30'
false

If we use letters then, since b is not less than a, abc is not less than aaa, but since c is less than d, abc is less than abd.

> 'abc' < 'aaa'
false
> 'abc' < 'abd'
true

You can explicitly convert strings to numbers:

> +'11' < '3'
false

Leave a Comment