The result is still the same of bikes as had i just written this: Calculate ( [SalesBikes]; ProductName="Seat"). I actually expected to turn around the evaluation order because i applied context transition but I didnt get what i hoped for. However, it looks like Calculate evaluated it another context though.
Your issue here is that CALCULATE did evaluate things in a different context (sort of). What changed is you used SUMX over the entire 'Product' table. SUMX is an iterator so created a row context. But because you are iterating over the entire table, all the columns of 'Product' are transitioned into the Filter context - not just the Product[Name] column. So even though the inner CALCULATE overwrites the filter on 'Name', the rest of the columns still have their respective filters for the currently evaluated row and those filters are causing all but 'Bike' to return blank.
If you were to re-write the function like this:
VALUES ( Product[Name] );
CALCULATE ( [SalesBikes]; Product[Name] = "Seat" )
you will get the results you had initially expected.
but I do not think that context is occurring at all: SUM () is not an iterator like SUMX().
SUM( Table[Column] ) is just shorthand for SUMX( Table, Column ).
Hope this helps....