É comum que as execuções das linhas de código ocorram de trás para frente em diversas linguagens, por exemplo logo na linha de código
acertou = chute == numerosecreto
O interpretador irá comparar o valor contido em "numerosecreto" com o valor contido em "chute", e o resultado booleano dessa comparação (True ou False) é armazenado na variável chute. Tudo feito de trás para frente, repare.
Porém quando ocorre um erro nesse processo, o padrão é aparecer no console o erro na ordem do código, para que de alguma forma facilite a identificação do erro no código pelo programador, por exemplo:
maior = 1 > 0 # maior passa a receber o valor True
maior = '1' > 0
# TypeError: '>' not supported between instances of 'str' and 'int'
# Repare que no erro ele mostrou primeiro STR e depois INT
maior = 1 > '0'
#TypeError: '>' not supported between instances of 'int' and 'str'
# Repare que ele mostrou INT primeiro e depois STR no erro
Pela lógica de execução do segundo exemplo, ele compara um INT com um STR (de trás para frente, lembre-se), o erro acontece quando ele chega nesse segundo tipo que é INT, mas ao imprimir o erro ele mostra na ordem que está no código: STR e INT, para facilitar sua leitura do código e você identificar com mais facilidade...
Acho que não deixei muito confuso rs
Em geral essa tecnica é boa pois a alternativa dela demanda algumas linhas de código fazendo algo como:
if 1 > 0:
maior = True
else:
maior = False
Ou utilizando outra facilidade do Python
maior = True if 1 > 0 else False