I found my problem :)
According to my table structure my query works fine
Because the field on which I put order by
clause has String DataType
and result is in order according to strings if I want result in numerical order change this line
'TotalCalories': { 'type':'Edm.String','maxLength':10 },
into this
'TotalCalories': { 'type':'Edm.Int32'}, // No need to define length now if you want in float then define float instead of int