Isso não tem nada a ver com o Ubuntu, mas ...
O motivo é que a expressão 5/18*3.24 é compilada (nesse caso, pré-calculada, mas, infelizmente, o resultado é o mesmo) que (5/18)*3.24 e interpretada da esquerda para a direita.
Agora, (5/18) é uma operação entre dois inteiros e retorna a divisão inteira entre 5 e 18, que é 0 (com o restante 5, mas você não solicitou isso). Quando você multiplica 0 e 3.14, a operação é mista, portanto, (int)0 é promovido para (double)0.0 e o resultado é, bem, 0.0 - conforme o esperado.
No outro caso, 50*3.14/180 , em primeiro lugar 50*3.14 é calculado; (int)50 é promovido para (double)50.0 e está tudo bem.
Moral: sempre use o formato correto para constantes. 5 significa (int)5 , 5.0 significa (double)5.0 , 5L significa (long int)5 , 09 significa que você não sabe C / C ++ ...
PS como uma nota secundária, esse comportamento é uma das grandes mudanças de python2 para python3. Pesquise na net por from __future__ import division se você estiver curioso.