출력 순서가 왜 이렇게 되는지 이해가 잘 안됩니다

public class TestTrace {
public static void main(String [] args) {
int tinker = 36;
int tailor = 54;
int soldier = smiley(tailor, tinker);
System.out.println("soldier = " + soldier);
}
static int smiley(int tinker, int tailor) {
int poorMan = guillam(tinker, tailor);
System.out.println("poorMan = " + poorMan);
int beggarMan = guillam(tailor + 9, tinker / 9);
System.out.println("beggarMan = " + beggarMan);
return poorMan + beggarMan;
}
static int guillam(int karla, int mundt) {
karla %= 10;
mundt /= 10;
return 100 * karla + mundt;
}
}

이걸 출실력하면
poorMan = 403
beggarMan = 500
soldier = 903

순서로 출력이 되는데 왜 솔져가 먼저 출력이 되지대않고 푸사어맨이 먼저 출력이 되는지 이해가 잘 안됩니다농
답변 부박탁드립니다