In reply to sapsharma19:
you can understand better by thinking like this,
before calculations are done for this edge, simulator retains old values in a temp variable internally and those values are used in assertions, not the values updated in this clock.
But, if you use a $display in an assert statement, you would get the updated value not the ones assertions see.
For this reason, you must use $sample(var) in display statements to get the values assertions see…