¿Por qué estas dos operaciones de multiplicación dan resultados diferentes?

¿Por qué necesito agregar una letra "L" para obtener el valor largo correcto? ¿Y cuál es el otro valor?

long oneYearWithL = 1000*60*60*24*365L;
long oneYearWithoutL = 1000*60*60*24*365;
System.out.println(oneYearWithL);//gives correct calculation result : 31536000000
System.out.println(oneYearWithoutL)//gives incorrect calculation result: 1471228928

Respuestas a la pregunta(2)

Su respuesta a la pregunta