Riddle - solve it if you can

I don't understand this, can anyone explain the evaluation logic used here, and I would really appreciate a general explanation for it.
----------------------
Here's the korn script:
--------------------
#! /usr/bin/ksh
if [[ 2 > 10 ]]
then
echo true
else
echo false
fi

if (( 2 > 10 ))
then
echo true
else
echo false
fi
-------------------
And the output is:
------------------
true
false

Why is the output like that? How is 10 > 2 even when evaluated as a string (giving me true)?

Thanks!

ASCII hex value of '1'- 31
ASCII hex value of '2'- 32

when compaired 'as strings': 32 > 31