Doing this is legal in Java
byte = 27 // 27 treated as int; implicit cast to byte
But when assigning a value as a result of expression, Java requires explicit casting
int a = 9;
byte b = 8;
byte c = a + b; // Compile error
What is the reason behind this?