Associatividade e ordem de precedência

Estou estudando Java e tem uma tabela de operadores que está escrito a ordem de precedência e a associatividade do operador. Alguém sabe me dizer qual a diferença e como funciona?

A diferença entre o que?
Como funciona o que exatamente?

Eu queria saber o que é associatividade e o que é ordem de precedência de operadores.

Tipo um operador é associado da direita para esquerda e tem a ordem de precedência de esquerda para direita…

Eu confesso que nunca tinha pensado na associatividade de operadores, mas conseguir entender a definiçao vendo esse tutorial: http://cs-fundamentals.com/java-programming/java-operators-precedence-and-associativity.php

Em resumo, precedência é um conceito mais comum, já que aparece na matemática de escola. Se tem vários operadores numa mesma expressao, o de maior precedência será calculado antes, por exemplo:

// operador * tem precedência maior que +
2 * 2 + 3 * 3 == 13
// a expressao acima é equivalente a
(2 * 2) + (3 * 3) == 13
// se + e * tivessem a mesma precedência, seria o equivalente a:
(((2 * 2) + 3) * 3) == 21

Já associatividade é a ordem em que os cálculos sao feitos, dada a mesma precedência, por exemplo:

int a = 1, b = 2, c = 3;
// = tem associatividade da direita pra esquerda
int d = a = b = c = 5;
// na expressao todas variaveis valem 5, porque primeiro c virou 5, depois b virou 5, depois a virou 5 e d.

// se = fosse da esquerda pra direita, os valores seriam d= 1, a=2, b=3 e c=5
2 curtidas

Obrigado!