Difference between the two regular expression I came across a question to create a regular expression to check whether there are even number of b's in a string of language {a,b}. The expression I came up with is (a+ba*b)*. However I found the solution online to be a*(ba*ba*). Is there any difference? If any where?

Also I know that (a+b)* is equivalent to (a*b*)*. So my solution comes out to be (a*(ba*b))*. So why that extra a*?
Your regular expression (a+ba*b)* won't match the string a which contains zero b's, an even number.  It also won't match the strings bb or bbbb, because the expression requires one or more a's before any occurring b's and requires at least one a between any two pairs of b's.

The regular expression a*(ba*ba*)* is the correct solution.  It allows any number of leading a's and then demands that there if there are b's present there be at least two b's among the remaining a's.  Thereafter b's are matched in groups of two among the a's and matching will fail if a b occurs outside such a pair.

The regular expression a*(ba*b)* is wrong because it won't match strings with a's between pairs of b's, such as the string bbaabb.