Hola, lo que estás haciendo tiene una explicación muy rebuscada.
Esa condición se cumple porque no estás comparando datos numéricos (estos datos no se expresan dentro de comillas),
estás comparando dígitos y aquí la lógica de comparación es distinta.
Lo que ocurre es lo siguiente, a cada dígito le corresponde un valor numérico basado en el código ASCII (
https://elcodigoascii.com.ar/). Por ejemplo la letra "A" en mayúsculas corresponde al número 65 y la letra "a" en minúsculas corresponde al valor 97, por lo que "a"(97) será mayor que "A"(65). Esto es así porque las primeras computadoras permitían escribir en letras mayúsculas y luego decidieron incluir a las letras minúsculas, ocupando números mas grandes en la tabla ASCII.
Entendiendo lo anterior, debemos intercambiar cada dígito por su número ASCII correspondiente, por ejemplo:
Luego el programa toma partes iguales, basándose en la cadena de texto mas pequeña.
Se empieza a comparar los numeros de arriba a abajo hasta encontrar el primer mayor, definiendo cual de los textos es mayor:
Como puedes ver, el texto "50" terminó siendo mayor que "11587" en el primer dígito.
Pongamos otro ejemplo, compararemos "24458" con "245" para ver cual es mayor:
Por último, pongamos el ejemplo de que los dígitos comparados son todos iguales. Trabajaremos con los textos "88725" y "887":
Si te fijas, los dígitos comparados eran todos iguales pero los dígitos sobrantes hicieron el desempate, haciendo que el texto que los posee sea considerado como el mayor.
En resumen: No es lo mismo 123 (número) que "123" (texto). La lógica de comparación son distintas.