Why does it give a different answer for variable d
pragma solidity >=0.8.0 < 0.9.0;
contract Exercise{
uint256 a = 2;
uint256 public c = a + a++;
uint256 public d = a + a++; // here why does a + (a++) give 7 but (a++) + a give 6
uint public e = a;
}