Slightly paraphrasing from the JavaSE Programming with Assertions tech note, your "secondPart" (referred to as Expression2) "is any expression that has a value. (It cannot be an invocation of a method that is declared void.)"
"The system passes the value of Expression2 to the appropriate AssertionError constructor, which uses the string representation of the value as the error's detail message."
So "secondPart" can be any expression that has a value; that value is converted to its string form for use in the AssertionError thrown by the assert.